This specification relates to managing application execution environments (e.g., virtual machines and runtime environments), on a computer platform. A computer platform is a computer including a particular operating system (OS) for that computer (e.g., WINDOWS® OS, MAC® OS, or LINUX® OS). Software developers often create source code that can be appropriately compiled for respective computer platforms, and then independently generate native installation packages for each target platform. Each native installation package is associated with a specific computer platform, and these native installation packages can then be distributed for installation on appropriate machines. For a particular target platform, the appropriate native installation package is obtained from the software developer, and an OS installer can be used to process the native installation package in order to install the application. For example, INSTALLSHIELD® software can be used to produce an .msi file for installation on WINDOWS® machines, and a different software tool can be used to produce .pkg files for installation on MAC® machines.
Some software developers have created cross-platform installation packages, such as the JAVA® Archive (JAR) file format, that get deployed to the end-user system. The cross-platform package can then be expanded (e.g., decrypted and uncompressed) and written directly to disk using code provided by the software developer and/or the developer of the cross-platform package format. Typically, such cross-platform software relies on a previously installed virtual machine, such as the JAVA® Virtual Machine (JVM) (available from Sun Microsystems, Inc.), to run on the target platform.
The JVM provides a runtime environment and Java interpreter for most operating systems, including WINDOWS® OS, MAC® OS, AND LINUX® OS. Java source code files (files with a java extension) are compiled into a format called bytecode (files with a class extension), which can then be executed by a Java interpreter. Bytecode can be converted directly into machine language instructions by a just-in-time compiler (JIT). Other example runtime environments include the C runtime, .NET, and the Adobe® Integrated Runtime.
Flash® Player (available from Adobe Systems Incorporated) is another virtual machine, which is used to run, or parse, Flash® files including Shockwave Flash (SWF) compiled from ActionScript. The Flash® Player and Flash® Authoring software allow development of projectors (self-running SWF movies) that run on a specific target platform, by embedding the SWF data in the Flash® Player executable to create a new .exe file, and manipulating a byte pattern in the .exe file to indicate the presence of the SWF data. Such projectors can then be distributed for use on the target platform.
Traditionally, runtimes and their installers have been developed separately. Often, the installation engine for a runtime is acquired or licensed from a third party. An installer for a runtime contains its own user interface and other facilities for interacting with the OS of the target computer platform. When a new version of a runtime is produced, the older version is often uninstalled, and the newer version is installed in its place. In this case, applications that previously used the older version of the runtime should be able to use the newer version in order to operate properly. In the case of the JVM, two versions of the JVM can be installed on a single computer, and these two JVM versions are then managed separately.